# -*- coding: utf-8 -*-

import logging

from django.contrib import admin, messages
from django.http import JsonResponse
from simpleui.admin import AjaxAdmin

from django_package.application.models import TableModel, DataFrameModel
from django_service.admin import get_admin_class

logger = logging.getLogger(__name__)


# model_tuple = (TableModel, DataFrameModel,)
# for table_model in model_tuple:
#     admin.site.register(table_model, admin_class=get_admin_class(table_model))
#
#
# admin.site.register(DataFrameModel, admin_class=get_admin_class(DataFrameModel,
#                                                                 search_fields=['df_name', 'df_code'],
#                                                                 list_filter=['df_type']))

@admin.register(DataFrameModel)
class DataFrameModelAdmin(admin.ModelAdmin):
    actions = ['custom_button']

    def custom_button(self, request, queryset):
        logger.info(f'custom_button: {request.GET}, {request.POST}.')
        messages.add_message(request, messages.SUCCESS, '信息：操作成功')
        return '返回：操作成功'

    custom_button.short_description = '自定义按钮'
    custom_button.icon = 'el-icon-stop'
    custom_button.type = 'danger'
    custom_button.confirm = '请确认是否点击此按钮？'
    pass


@admin.register(TableModel)
class TableAjaxAdmin(AjaxAdmin):
    actions = ['custom_button']

    def custom_button(self, request, queryset):
        logger.info(f'custom_button: {request.GET}, {request.POST}.')
        post = request.POST
        result_data = {}
        if not post.get('_selected'):
            result_data = {
                'status': 'error',
                'msg': '请先选中数据！'
            }
        else:
            result_data = {
                'status': 'success',
                'msg': '处理成功！'
            }
        return JsonResponse(data=result_data)

    custom_button.short_description = '自定义按钮'
    custom_button.icon = 'el-icon-stop'
    custom_button.type = 'danger'
    custom_button.layer = {
        # 窗口标题
        'title': '弹出层标题',
        # 提示信息
        'tips': '提示信息',
        # 确认按钮显示文本
        'confirm_button': '确认按钮',
        # 取消按钮显示文本
        'cancel_button': '取消按钮',
        # 弹出层对话框的宽度，默认50%
        'width': '50%',
        # 表单中 label的宽度，对应element-ui的 label-width，默认80px
        'labelWidth': "80px",
        # 参数表单
        'params': [
            {
                # 这里的type 对应el-input的原生input属性，默认为input
                'type': 'input',
                # key 对应post参数中的key
                'key': 'name',
                # 显示的文本
                'label': '名称',
                # 为空校验，默认为False
                'require': True
            },
            {
                'type': 'select',
                'key': 'type',
                'label': '类型',
                'width': '200px',
                # size对应elementui的size，取值为：medium / small / mini
                'size': 'small',
                # value字段可以指定默认值
                'value': '0',
                'options': [{
                    'key': '0',
                    'label': '收入'
                },
                    {
                        'key': '1',
                        'label': '支出'
                    }]
            },
            {
                'type': 'number',
                'key': 'money',
                'label': '金额',
                # 设置默认值
                'value': 1000
            },
            {
                'type': 'date',
                'key': 'date',
                'label': '日期',
            },
            {
                'type': 'datetime',
                'key': 'datetime',
                'label': '时间',
            },
            {
                'type': 'rate',
                'key': 'star',
                'label': '评价等级'
            },
            {
                'type': 'color',
                'key': 'color',
                'label': '颜色'
            },
            {
                'type': 'slider',
                'key': 'slider',
                'label': '滑块'
            },
            {
                'type': 'switch',
                'key': 'switch',
                'label': 'switch开关'
            },
            {
                'type': 'input_number',
                'key': 'input_number',
                'label': 'input number'
            },
            {
                'type': 'checkbox',
                'key': 'checkbox',
                # 必须指定默认值
                'value': [],
                'label': '复选框',
                'options': [{
                    'key': '0',
                    'label': '收入'
                },
                    {
                        'key': '1',
                        'label': '支出'
                    },
                    {
                        'key': '2',
                        'label': '收益'
                    }]
            },
            {
                'type': 'radio',
                'key': 'radio',
                'label': '单选框',
                'options': [{
                    'key': '0',
                    'label': '收入'
                },
                    {
                        'key': '1',
                        'label': '支出'
                    },
                    {
                        'key': '2',
                        'label': '收益'
                    }]
            },
            {
                'type': 'file',
                'key': 'upload',
                'label': '文件'
            },

        ],
    }

    pass
